{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.读取数据集"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:36:11.144416Z",
     "start_time": "2024-12-27T01:36:11.102424Z"
    }
   },
   "source": [
    "#导入数据分析的常用工具包\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns;sns.set()\n",
    "%matplotlib inline"
   ],
   "outputs": [],
   "execution_count": 2
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:36:12.394480Z",
     "start_time": "2024-12-27T01:36:12.315220Z"
    }
   },
   "source": [
    "df = pd.read_csv(r'C:\\Users\\Administrator\\Desktop\\1\\HR_comma_sep.csv')\n",
    "df.head()"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   satisfaction_level  last_evaluation  number_project  average_montly_hours  \\\n",
       "0                0.38             0.53               2                   157   \n",
       "1                0.80             0.86               5                   262   \n",
       "2                0.11             0.88               7                   272   \n",
       "3                0.72             0.87               5                   223   \n",
       "4                0.37             0.52               2                   159   \n",
       "\n",
       "   time_spend_company  Work_accident  left  promotion_last_5years department  \\\n",
       "0                   3              0     1                      0      sales   \n",
       "1                   6              0     1                      0      sales   \n",
       "2                   4              0     1                      0      sales   \n",
       "3                   5              0     1                      0      sales   \n",
       "4                   3              0     1                      0      sales   \n",
       "\n",
       "   salary  \n",
       "0     low  \n",
       "1  medium  \n",
       "2  medium  \n",
       "3     low  \n",
       "4     low  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>satisfaction_level</th>\n",
       "      <th>last_evaluation</th>\n",
       "      <th>number_project</th>\n",
       "      <th>average_montly_hours</th>\n",
       "      <th>time_spend_company</th>\n",
       "      <th>Work_accident</th>\n",
       "      <th>left</th>\n",
       "      <th>promotion_last_5years</th>\n",
       "      <th>department</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.38</td>\n",
       "      <td>0.53</td>\n",
       "      <td>2</td>\n",
       "      <td>157</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>sales</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.80</td>\n",
       "      <td>0.86</td>\n",
       "      <td>5</td>\n",
       "      <td>262</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>sales</td>\n",
       "      <td>medium</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.11</td>\n",
       "      <td>0.88</td>\n",
       "      <td>7</td>\n",
       "      <td>272</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>sales</td>\n",
       "      <td>medium</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.72</td>\n",
       "      <td>0.87</td>\n",
       "      <td>5</td>\n",
       "      <td>223</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>sales</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.37</td>\n",
       "      <td>0.52</td>\n",
       "      <td>2</td>\n",
       "      <td>159</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>sales</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 3
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:36:14.317120Z",
     "start_time": "2024-12-27T01:36:14.292127Z"
    }
   },
   "source": [
    "#查看数据集的基本信息\n",
    "df.info()"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 14999 entries, 0 to 14998\n",
      "Data columns (total 10 columns):\n",
      "satisfaction_level       14999 non-null float64\n",
      "last_evaluation          14999 non-null float64\n",
      "number_project           14999 non-null int64\n",
      "average_montly_hours     14999 non-null int64\n",
      "time_spend_company       14999 non-null int64\n",
      "Work_accident            14999 non-null int64\n",
      "left                     14999 non-null int64\n",
      "promotion_last_5years    14999 non-null int64\n",
      "department               14999 non-null object\n",
      "salary                   14999 non-null object\n",
      "dtypes: float64(2), int64(6), object(2)\n",
      "memory usage: 1.1+ MB\n"
     ]
    }
   ],
   "execution_count": 4
  },
  {
   "cell_type": "code",
   "metadata": {
    "scrolled": false,
    "ExecuteTime": {
     "end_time": "2024-12-27T01:36:17.262058Z",
     "start_time": "2024-12-27T01:36:17.226177Z"
    }
   },
   "source": [
    "#查看该数据集的统计结果\n",
    "df.describe().T"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "                         count        mean        std    min     25%     50%  \\\n",
       "satisfaction_level     14999.0    0.612834   0.248631   0.09    0.44    0.64   \n",
       "last_evaluation        14999.0    0.716102   0.171169   0.36    0.56    0.72   \n",
       "number_project         14999.0    3.803054   1.232592   2.00    3.00    4.00   \n",
       "average_montly_hours   14999.0  201.050337  49.943099  96.00  156.00  200.00   \n",
       "time_spend_company     14999.0    3.498233   1.460136   2.00    3.00    3.00   \n",
       "Work_accident          14999.0    0.144610   0.351719   0.00    0.00    0.00   \n",
       "left                   14999.0    0.238083   0.425924   0.00    0.00    0.00   \n",
       "promotion_last_5years  14999.0    0.021268   0.144281   0.00    0.00    0.00   \n",
       "\n",
       "                          75%    max  \n",
       "satisfaction_level       0.82    1.0  \n",
       "last_evaluation          0.87    1.0  \n",
       "number_project           5.00    7.0  \n",
       "average_montly_hours   245.00  310.0  \n",
       "time_spend_company       4.00   10.0  \n",
       "Work_accident            0.00    1.0  \n",
       "left                     0.00    1.0  \n",
       "promotion_last_5years    0.00    1.0  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>satisfaction_level</th>\n",
       "      <td>14999.0</td>\n",
       "      <td>0.612834</td>\n",
       "      <td>0.248631</td>\n",
       "      <td>0.09</td>\n",
       "      <td>0.44</td>\n",
       "      <td>0.64</td>\n",
       "      <td>0.82</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>last_evaluation</th>\n",
       "      <td>14999.0</td>\n",
       "      <td>0.716102</td>\n",
       "      <td>0.171169</td>\n",
       "      <td>0.36</td>\n",
       "      <td>0.56</td>\n",
       "      <td>0.72</td>\n",
       "      <td>0.87</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_project</th>\n",
       "      <td>14999.0</td>\n",
       "      <td>3.803054</td>\n",
       "      <td>1.232592</td>\n",
       "      <td>2.00</td>\n",
       "      <td>3.00</td>\n",
       "      <td>4.00</td>\n",
       "      <td>5.00</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>average_montly_hours</th>\n",
       "      <td>14999.0</td>\n",
       "      <td>201.050337</td>\n",
       "      <td>49.943099</td>\n",
       "      <td>96.00</td>\n",
       "      <td>156.00</td>\n",
       "      <td>200.00</td>\n",
       "      <td>245.00</td>\n",
       "      <td>310.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time_spend_company</th>\n",
       "      <td>14999.0</td>\n",
       "      <td>3.498233</td>\n",
       "      <td>1.460136</td>\n",
       "      <td>2.00</td>\n",
       "      <td>3.00</td>\n",
       "      <td>3.00</td>\n",
       "      <td>4.00</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Work_accident</th>\n",
       "      <td>14999.0</td>\n",
       "      <td>0.144610</td>\n",
       "      <td>0.351719</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>left</th>\n",
       "      <td>14999.0</td>\n",
       "      <td>0.238083</td>\n",
       "      <td>0.425924</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>promotion_last_5years</th>\n",
       "      <td>14999.0</td>\n",
       "      <td>0.021268</td>\n",
       "      <td>0.144281</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 5
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:52:40.424706Z",
     "start_time": "2024-12-27T01:52:40.413814Z"
    }
   },
   "source": [
    "#查看数据集的大小\n",
    "df.shape"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(14999, 10)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 12
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:36:46.177464Z",
     "start_time": "2024-12-27T01:36:46.171485Z"
    }
   },
   "source": [
    "df.columns"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['satisfaction_level', 'last_evaluation', 'number_project',\n",
       "       'average_montly_hours', 'time_spend_company', 'Work_accident', 'left',\n",
       "       'promotion_last_5years', 'department', 'salary'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 6
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.初步探索性分析"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:52:50.335800Z",
     "start_time": "2024-12-27T01:52:50.115127Z"
    }
   },
   "source": [
    "#绘制箱型图，观察不同特征与离职之间的关系\n",
    "\n",
    "plt.figure(figsize = (10,10))\n",
    "plt.subplot(2,2,1)\n",
    "sns.boxplot(x = 'left',y = 'satisfaction_level',data = df)\n",
    "\n",
    "\n",
    "plt.subplot(2,2,2)\n",
    "sns.boxplot(x = 'left',y = 'last_evaluation',data = df)\n",
    "\n",
    "plt.subplot(2,2,3)\n",
    "sns.boxplot(x = 'left',y = 'average_montly_hours',data = df)\n",
    "\n",
    "plt.subplot(2,2,4)\n",
    "sns.boxplot(x = 'left',y = 'time_spend_company',data = df)"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1f864939a58>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 720x720 with 4 Axes>"
      ],
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "execution_count": 14
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 离职员工的工作满意度在40%左右，未离职员工的工作满意度在70%左右。\n",
    "* 离职员工的绩效评估较高，在0.8左右。\n",
    "* 离职员工的工作时长较长，在225小时左右。\n",
    "* 离职员工的工作年限在4年左右。"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:52:54.007601Z",
     "start_time": "2024-12-27T01:52:53.885708Z"
    }
   },
   "source": [
    "#观察离职与参与的项目的数量的关系\n",
    "sns.countplot(x = 'number_project',hue = 'left',data = df)"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1f864a07f60>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ],
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "execution_count": 15
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.建立决策树模型"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:52:56.409834Z",
     "start_time": "2024-12-27T01:52:56.395882Z"
    }
   },
   "source": [
    "df.dtypes"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "satisfaction_level       float64\n",
       "last_evaluation          float64\n",
       "number_project             int64\n",
       "average_montly_hours       int64\n",
       "time_spend_company         int64\n",
       "Work_accident              int64\n",
       "left                       int64\n",
       "promotion_last_5years      int64\n",
       "department                object\n",
       "salary                    object\n",
       "dtype: object"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 16
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:52:59.299435Z",
     "start_time": "2024-12-27T01:52:59.287467Z"
    }
   },
   "source": [
    "# 对类别变量进行处理\n",
    "\n",
    "df['salary'].unique()"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['low', 'medium', 'high'], dtype=object)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 17
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:53:01.596651Z",
     "start_time": "2024-12-27T01:53:01.581706Z"
    }
   },
   "source": [
    "df['department'].unique()"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['sales', 'accounting', 'hr', 'technical', 'support', 'management',\n",
       "       'IT', 'product_mng', 'marketing', 'RandD'], dtype=object)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 18
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:53:02.993688Z",
     "start_time": "2024-12-27T01:53:02.966778Z"
    }
   },
   "source": [
    "department_map = {'sales':0, 'accounting':1, 'hr':2, 'technical':3, 'support':4, 'management':5,\n",
    "       'IT':6, 'product_mng':7, 'marketing':8, 'RandD':9}\n",
    "salary_map = {'low':0, 'medium':1, 'high':2}\n",
    "\n",
    "df['department'] = df['department'].map(department_map)\n",
    "df['salary'] = df['salary'].map(salary_map)\n",
    "df.head()"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   satisfaction_level  last_evaluation  number_project  average_montly_hours  \\\n",
       "0                0.38             0.53               2                   157   \n",
       "1                0.80             0.86               5                   262   \n",
       "2                0.11             0.88               7                   272   \n",
       "3                0.72             0.87               5                   223   \n",
       "4                0.37             0.52               2                   159   \n",
       "\n",
       "   time_spend_company  Work_accident  left  promotion_last_5years  department  \\\n",
       "0                   3              0     1                      0           0   \n",
       "1                   6              0     1                      0           0   \n",
       "2                   4              0     1                      0           0   \n",
       "3                   5              0     1                      0           0   \n",
       "4                   3              0     1                      0           0   \n",
       "\n",
       "   salary  \n",
       "0       0  \n",
       "1       1  \n",
       "2       1  \n",
       "3       0  \n",
       "4       0  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>satisfaction_level</th>\n",
       "      <th>last_evaluation</th>\n",
       "      <th>number_project</th>\n",
       "      <th>average_montly_hours</th>\n",
       "      <th>time_spend_company</th>\n",
       "      <th>Work_accident</th>\n",
       "      <th>left</th>\n",
       "      <th>promotion_last_5years</th>\n",
       "      <th>department</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.38</td>\n",
       "      <td>0.53</td>\n",
       "      <td>2</td>\n",
       "      <td>157</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.80</td>\n",
       "      <td>0.86</td>\n",
       "      <td>5</td>\n",
       "      <td>262</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.11</td>\n",
       "      <td>0.88</td>\n",
       "      <td>7</td>\n",
       "      <td>272</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.72</td>\n",
       "      <td>0.87</td>\n",
       "      <td>5</td>\n",
       "      <td>223</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.37</td>\n",
       "      <td>0.52</td>\n",
       "      <td>2</td>\n",
       "      <td>159</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 19
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:53:05.427792Z",
     "start_time": "2024-12-27T01:53:05.414319Z"
    }
   },
   "source": [
    "#切分训练集个测试集\n",
    "label = df['left']\n",
    "train = df.drop('left',axis = 1)\n",
    "\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train,X_test,y_train,y_test = train_test_split(train,label,test_size = 0.3,random_state = 0)"
   ],
   "outputs": [],
   "execution_count": 20
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:53:09.622025Z",
     "start_time": "2024-12-27T01:53:09.578342Z"
    }
   },
   "source": [
    "#导入决策树模型\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "\n",
    "tree = DecisionTreeClassifier()\n",
    "tree.fit(X_train,y_train)\n",
    "tree.score(X_test,y_test)"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9788888888888889"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 21
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:53:11.745723Z",
     "start_time": "2024-12-27T01:53:11.731772Z"
    }
   },
   "source": [
    "#测试集的预测结果\n",
    "y_pred = tree.predict(X_test)"
   ],
   "outputs": [],
   "execution_count": 22
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:53:18.703102Z",
     "start_time": "2024-12-27T01:53:18.674621Z"
    }
   },
   "source": [
    "#打印出混淆矩阵值\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "confusion_matrix(y_test,y_pred,labels = [0,1])"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[3398,   64],\n",
       "       [  31, 1007]], dtype=int64)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 23
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T01:53:22.032034Z",
     "start_time": "2024-12-27T01:53:22.019069Z"
    }
   },
   "source": [
    "df['left'].value_counts()"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    11428\n",
       "1     3571\n",
       "Name: left, dtype: int64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 24
  },
  {
   "cell_type": "code",
   "metadata": {
    "scrolled": true,
    "ExecuteTime": {
     "end_time": "2024-12-27T01:53:24.789035Z",
     "start_time": "2024-12-27T01:53:24.781548Z"
    }
   },
   "source": [
    "#检查模型的各项评估指标\n",
    "accuracy = (3394+1010)/(3394 + 68 + 28 +1010)\n",
    "precision = 1010/(1010+28)\n",
    "recall = 1010/(1010+68)\n",
    "print(accuracy,precision,recall)"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9786666666666667 0.9730250481695568 0.9369202226345084\n"
     ]
    }
   ],
   "execution_count": 25
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.支持向量机SVM算法预测"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T02:00:50.598967Z",
     "start_time": "2024-12-27T02:00:48.783196Z"
    }
   },
   "source": [
    "from sklearn.svm import SVC\n",
    "\n",
    "clf = SVC()\n",
    "clf.fit(X_train,y_train)\n",
    "y_pred = clf.predict(X_test)\n",
    "confusion_matrix(y_test,y_pred,labels = [0,1])"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[3344,  118],\n",
       "       [ 105,  933]], dtype=int64)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 26
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T02:00:53.654760Z",
     "start_time": "2024-12-27T02:00:53.643797Z"
    }
   },
   "source": [
    "svc_accuracy = (3344 + 933)/(3344 + 118 +105 + 933)\n",
    "svc_recall = 933/(933+105)\n",
    "svc_precision = 933/(933+118)\n",
    "\n",
    "print(svc_accuracy,svc_recall,svc_precision)"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9504444444444444 0.8988439306358381 0.8877259752616555\n"
     ]
    }
   ],
   "execution_count": 27
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T02:01:22.966867Z",
     "start_time": "2024-12-27T02:00:55.853580Z"
    }
   },
   "source": [
    "# 使用Gridsearch函数，对模型进行参数调优\n",
    "import time\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "clf = SVC()\n",
    "param_grid = {'C':[0.01,0.1,1,10,100],'gamma':[0.001,0.01,0.1,1,10] }\n",
    "grid = GridSearchCV(clf,param_grid = param_grid,cv = 3,n_jobs = -1,verbose = 2)\n",
    "t1 = time.time()\n",
    "grid.fit(X_train,y_train)\n",
    "t2 = time.time()\n",
    "print('The train time usage:{}'.format(round((t2-t1),3)))"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 3 folds for each of 25 candidates, totalling 75 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=-1)]: Done   9 tasks      | elapsed:    5.7s\n",
      "[Parallel(n_jobs=-1)]: Done  75 out of  75 | elapsed:   25.1s finished\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The train time usage:27.104\n"
     ]
    }
   ],
   "execution_count": 28
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T02:01:47.399545Z",
     "start_time": "2024-12-27T02:01:47.386981Z"
    }
   },
   "source": [
    "print(grid.best_score_)\n",
    "print(grid.best_params_)"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9587579769501857\n",
      "{'C': 100, 'gamma': 0.01}\n"
     ]
    }
   ],
   "execution_count": 29
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T02:01:57.864644Z",
     "start_time": "2024-12-27T02:01:56.756851Z"
    }
   },
   "source": [
    "#采用最优的参数再次构建SVC模型\n",
    "\n",
    "svc = SVC(C = 100,gamma = 0.01)\n",
    "svc.fit(X_train,y_train)\n",
    "y_pred = svc.predict(X_test)"
   ],
   "outputs": [],
   "execution_count": 30
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T02:02:00.155059Z",
     "start_time": "2024-12-27T02:02:00.125647Z"
    }
   },
   "source": [
    "confusion_matrix(y_test,y_pred,labels = [0,1])"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[3374,   88],\n",
       "       [  82,  956]], dtype=int64)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 31
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T02:02:02.279717Z",
     "start_time": "2024-12-27T02:02:02.269243Z"
    }
   },
   "source": [
    "accuracy = (3374+956)/(3374 + 88 + 82 + 956)\n",
    "recall = 956/(956+82)\n",
    "precision = 979/(956+88)\n",
    "print(accuracy,recall,precision)"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9622222222222222 0.9210019267822736 0.9377394636015326\n"
     ]
    }
   ],
   "execution_count": 32
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-12-27T02:02:03.946058Z",
     "start_time": "2024-12-27T02:02:03.936092Z"
    }
   },
   "source": [
    "#展示决策树和支持向量机算法的预测结果\n",
    "\n",
    "result = {'Decisiontree':[0.9786,0.9730,0.9369],'SVC':[0.9622,0.9210,0.9377]}\n",
    "pd.DataFrame(result,index = ['accuracy','recall','precision'])"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "           Decisiontree     SVC\n",
       "accuracy         0.9786  0.9622\n",
       "recall           0.9730  0.9210\n",
       "precision        0.9369  0.9377"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Decisiontree</th>\n",
       "      <th>SVC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>accuracy</th>\n",
       "      <td>0.9786</td>\n",
       "      <td>0.9622</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>recall</th>\n",
       "      <td>0.9730</td>\n",
       "      <td>0.9210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>precision</th>\n",
       "      <td>0.9369</td>\n",
       "      <td>0.9377</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 33
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
